#ifndef __SERVO_EXTEND_H
#define __SERVO_EXTEND_H

#include "main.h"

extern uint16_t batteryVolt;

// c++内容
#ifdef __cplusplus

#endif

// c语言内容
#ifdef __cplusplus
extern "C" {
#endif

// 舵机ID,舵机目标位置
typedef struct _lobot_servo_ {
    uint8_t ID;
    uint16_t Position;
} LobotServo;

/**
 * @brief 舵机控制器初始化
 *
 * @param huart
 */
void SE_init(UART_HandleTypeDef *huart);

/**
 * @brief 舵机移动
 *
 * @param servoID 舵机ID
 * @param Position 目标位置
 * @param Time 移动时间
 */
void SE_move_servo(uint8_t servoID, uint16_t Position, uint16_t Time);

/**
 * @brief 舵机组移动
 *
 * @param servos 舵机组
 * @param Num 舵机个数
 * @param Time 移动时间
 */
void SE_move_servos_by_array(LobotServo servos[], uint8_t Num, uint16_t Time);

/**
 * @brief 舵机组移动
 *
 * @param Num 舵机个数
 * @param Time 移动时间
 * @param ... 舵机ID和目标位置
 */
void SE_move_servos(uint8_t Num, uint16_t Time, ...);

/**
 * @brief 舵机组移动
 *
 * @param servos 舵机组
 * @param Num 舵机个数
 * @param Time 移动时间
 */
void SE_get_battery_voltage(void);

#ifdef __cplusplus
}
#endif

#endif